﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using NIEN_LUAN.Db;
using System.Windows.Forms;

namespace NIEN_LUAN
{
    public partial class FormThongKeDoanhThu : Form
    {
        private DataContentDataContext db = new DataContentDataContext();

        public FormThongKeDoanhThu()
        {
            InitializeComponent();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void FormThongKeDoanhThu_Load(object sender, EventArgs e)
        {

            var listngay = new List<NgayThang>();
            for (int i = 1; i <= 31; i++)
            {
                listngay.Add(new NgayThang
                {
                    Ngay = i

                });
            }
            bsNgay.DataSource = listngay;


            this.comboBoxNgay.DataSource = bsNgay;
            this.comboBoxNgay.DisplayMember = "Ngay";


            var listNgayThang = new List<NgayThang>();
            for (int i = 1; i < 13; i++)
            {
                listNgayThang.Add(new NgayThang
                {
                    Nam = 1990,
                    NamName = "",
                    Ngay = 1,
                    Thang = i,
                    //ThangName="Tháng "+i
                    ThangName = "" + i
                });
            }
            bsThang.DataSource = listNgayThang;
            this.comboBoxThang.DataSource = bsThang;
            this.comboBoxThang.DisplayMember = "ThangName";

            var listNam = new List<NgayThang>();

            var yearcurrent = DateTime.Now.Year;
            for (int i = yearcurrent - 20; i <= yearcurrent; i++)
            {
                listNam.Add(new NgayThang
                {
                    Nam = i,
                    //NamName="Năm "+i,
                    NamName = "" + i,
                    Ngay = 1,
                    Thang = 1,
                    ThangName = ""
                });
            }
            bsNam.DataSource = listNam;
            this.comboBoxNam.DataSource = bsNam;
            this.comboBoxNam.DisplayMember = "NamName";
            // this.dataGridViewHangTon.AutoGenerateColumns = false ;



            this.dataGridViewDSHang.AutoGenerateColumns = false;
            this.dataGridViewDSHang.DataSource = bsDoanhThu;
            //var dshang = (from dsh in db.MATHANGs
            //                  orderby dsh.MaHang ascending
            //                  select dsh
            //                  ).ToList();
            //this.bsDoanhThu.DataSource=dshang;
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void btnDoanhthu_Click(object sender, EventArgs e)
        {
            #region Trường hợp th^ống k^e 1 ng`ay b^ất kỳ
            if (checkBoxNam.Checked && checkBoxNgay.Checked && checkBoxThang.Checked)
            {
                //neu chọn 1 ng`ay b^ất kỳ
                try
                {
                    var day = new DateTime((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,
                        
                        (bsNgay.Current as NgayThang).Ngay);


                    var phieuthus = (from m in db.PHIEUTHUs
                                     where ((m.NgayLap >= day)&&(m.NgayLap<day.AddDays(1)))
                                     select m).ToList();

                    this.bsDoanhThu.DataSource = phieuthus;
                    this.bsDoanhThu.ResetBindings(true);
                    var tong = (from m in db.PHIEUTHUs
                                where ((m.NgayLap >= day) && (m.NgayLap < day.AddDays(1)))
                                select m).Sum(s => s.SoTien);

                    this.numericUpDowntien.Value = tong.Value;


                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ng`ay kh^ong hợp l^ệ");
                    throw;
                }
              
            }
            #endregion

            #region th^ống k^e theo tháng
            if (!checkBoxNgay.Checked && checkBoxThang.Checked && checkBoxNam.Checked)
            {
                var day1 = new DateTime((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,
                        1);
                #region Xác d9uinh5 ng`ay cu^ối tháng
                var day2 = new DateTime();
                try
                {
                    day2 = new DateTime((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,

                            31);//n^ếu tháng có 31 ng`ay ko th`i l^ỗi
                }
                catch
                {
                    //n^eu 1htnag1 đó ko có 31 ng`ay
                    try
                    {
                        day2 = new DateTime((bsNam.Current as NgayThang).Nam,(bsThang.Current as NgayThang).Thang,

                               30);//n^ếu tháng có 31 ng`ay ko th`i l^ỗi
                    }
                    catch
                    {
                        try
                        {
                            day2 = new DateTime ((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,

                               29);//n^ếu tháng có 31 ng`ay ko th`i l^ỗi
                        }
                        catch
                        {

                            day2 = new DateTime((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,

                               28);//n^ếu tháng có 28 ng`ay tháng n`ao cũng có                        }
                        }

                    } 
                #endregion

                   
                }
                var phieuthu = (from m in db.PHIEUTHUs
                                where ((m.NgayLap >= day1) && (m.NgayLap <= day2))
                                select m).ToList();
                this.bsDoanhThu.DataSource = phieuthu;
                this.bsDoanhThu.ResetBindings(true);
                var tong = (from m in db.PHIEUTHUs
                            where ((m.NgayLap >= day1) && (m.NgayLap <= day2))
                            select m).Sum(s => s.SoTien);

                this.numericUpDowntien.Value = tong.Value;

            #endregion
            }

            if (!checkBoxNgay.Checked && !checkBoxThang.Checked && checkBoxNam.Checked)
            {
                var day1 = new DateTime((bsNam.Current as NgayThang).Nam, 1, 1);
                var day2 = new DateTime((bsNam.Current as NgayThang).Nam, 12, 31);
                //#region Xác d9uinh5 ng`ay cu^ối tháng
                //var day2 = new DateTime();
                //try
                //{
                //    day2 = new DateTime((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,

                //            31);//n^ếu tháng có 31 ng`ay ko th`i l^ỗi
                //}
                //catch
                //{
                //    //n^eu 1htnag1 đó ko có 31 ng`ay
                //    try
                //    {
                //        day2 = new DateTime((bsNam.Current as NgayThang).Nam,(bsThang.Current as NgayThang).Thang,

                //               30);//n^ếu tháng có 31 ng`ay ko th`i l^ỗi
                //    }
                //    catch
                //    {
                //        try
                //        {
                //            day2 = new DateTime ((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,

                //               29);//n^ếu tháng có 31 ng`ay ko th`i l^ỗi
                //        }
                //        catch
                //        {

                //            day2 = new DateTime((bsNam.Current as NgayThang).Nam, (bsThang.Current as NgayThang).Thang,

                //               28);//n^ếu tháng có 28 ng`ay tháng n`ao cũng có                        }
                //        }

                //    } 
                //#endregion


                //}
                var phieuthu = (from m in db.PHIEUTHUs
                                where ((m.NgayLap >= day1) && (m.NgayLap <= day2))
                                select m).ToList();
                this.bsDoanhThu.DataSource = phieuthu;
                this.bsDoanhThu.ResetBindings(true);
                var tong = (from m in db.PHIEUTHUs
                            where ((m.NgayLap >= day1) && (m.NgayLap <= day2))
                            select m).Sum(s => s.SoTien);

                this.numericUpDowntien.Value = tong.Value;


            }        


            //var tong = (from m in db.PHIEUTHUs
            //                    select m).Sum(s=>s.SoTien);

            //this.numericUpDowntien.Value = tong.Value;
        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            Form frmthongkedoanhthu = new FormReportDoanhthu(this);
            frmthongkedoanhthu.ShowDialog();
        }


    }
}